This invention relates to the field of end-user computing, and more particularly to computing in systems or applications in which certain activities are carried out by the system without any direct instruction to do so by a user.
Modern end-user application environments frequently incorporate xe2x80x9cimplicitxe2x80x9d program actions that are carried out, not at the direct instigation of a user, but autonomously by the system or application itself. A well-known example is the AUTOSAVE function of many editing environments, in which the application periodically saves the work done so far on a disk, so that it is available for retrieval if the system or application fails before the user has had a chance to perform an explicit save of the data.
In such an environment, it is sometimes also the case that a task will take some action, not as the result of a user request, but as a result of a predetermined time-limit being exceeded, or as an implied result of some other, unrelated user action.
In U.S. Pat. No. 5,953,017 to Beach et al., a method is disclosed for collapsing a portion of a tree-view of objects by selecting a subset of sibling objects and replacing the display of the subset with a new identifier that represents the subset, wherein the new identifier comprises the first object identifier and the last object identifier.
While these autonomous actions are useful in, for example, preserving work that might be lost over a system failure, or saving the user from extra keystrokes, or keeping a screen display free from unnecessary clutter, they may have disadvantages in other respects. In situations in which there is a shortage of disk space, for example, autonomous actions that consume disk space may be undesirable. Also, applications incorporating these autonomous actions, in their attempt to help the user, cannot always accurately predict the user""s wishes. When they fail to do so the result may be annoyingly disadvantageous in reducing the ease-of-use characteristics of the system or application. Typically, to reverse the effects of such actions requires several steps to be taken by the user, as, for example, opening separate GUI windows to locate and delete unwanted, autonomously-created files. Additionally, where the autonomous actions can be switched on and off, such a switch is typically used to set an action or actions off for an entire session, or as a system-wide option; in such circumstances, the user must remember to set the switch off for each session and reset it when the autonomous actions are again desired.
In most modern editing environments and graphical user interfaces, it is usual for the application to maintain a history of actions performed by the user, so that they can be reversed. Typically, one of the pull-down menu options (to take an example from a GUI operating system environment) will present the user with a selection option such as UNDO. This is sometimes tailored to include a reference to what the original action was. For example, UNDO MOVE would return an object that had been moved from one position in a file to its original position. It is sometimes possible in these environments to step back through a number of actions by repeated use of the UNDO option. Although this function of undoing user actions is useful, it is limited in its usefulness in modern end-user computing environments in which advanced ease-of-use characteristics have been incorporated.
In a first aspect the present invention accordingly provides a method for, in an end-user computer environment, reversing an effect of an autonomously-initiated program action, said method comprising the steps of: recognizing that the program action is to be performed; recording data representing a state change caused by the program action; providing a user option to cause the computer system to reverse the state change caused by the program action; responsive to a user selection of the user option, retrieving the data representing a state change; and reversing the state change caused by the program action.
In a method according to the first aspect the step of recording data representing a state change preferably further comprises: recording data representing a before state; and recording data representing an after state.
The step of recording data representing a state change caused by the program action preferably further comprises: determining that the state change includes a sequenced plurality of actions; and recording a corresponding sequenced plurality of reversing actions.
The step of reversing the state change caused by the program action preferably further comprises: determining that the state change included a sequenced plurality of actions; and executing a corresponding sequenced plurality of reversing actions.
The method of the first aspect is preferably further characterized in that said step of reversing comprises re-expanding a collapsed subtree of a tree structure.
The method of the first aspect is preferably further characterized in that said step of reversing comprises re-unfolding a folded section of data in a folding editor.
The method of the first aspect is preferably further characterized in that said step of reversing comprises redisplaying a graphics viewport at a previous zoom value.
The method of the first aspect is preferably further characterized in that said step of reversing comprises deleting autonomously-created data from a store.
The method of the first aspect is preferably further characterized in that said step of providing a user option comprises providing an active menu element.
The method of the first aspect is preferably further characterized in that said step of providing a user option comprises providing an active keyboard shortcut.
The method of the first aspect is preferably further characterized in that said step of providing a user option comprises providing an active voice-response element.
The method of the first aspect is preferably further characterized in that said step of providing a user option comprises providing an active screen display element.
In a second aspect, the present invention provides apparatus, in an end-user computer environment, for reversing an effect of an autonomously-initiated program action, said apparatus comprising: means for recognizing that the program action is to be performed; means for recording data representing a state change caused by the program action; means for providing a user option to cause the computer system to reverse the state change caused by the program action; means, responsive to a user selection of the user option, retrieving the data representing a state change; and means for reversing the state change caused by the program action.
The apparatus of the second aspect preferably further comprises features corresponding to those features stated to be preferred in the first aspect.